/*
 * tower.h
 *
 *  Created on: Oct 13, 2009
 *      Author: scott
 */

#ifndef TOWER_H_
#define TOWER_H_

class Tower
{
public:
	virtual void shoot() =0;		//Shoot
	virtual void upgrade() =0;		//Upgrade
	virtual int get_x() =0;			//Return x
	virtual int get_y() =0;			//Return y
	virtual int get_w() =0;			//Return width
	virtual int get_h() =0;			//Return height
	virtual int get_level() =0;		//Return level
	virtual void set_x(int) =0;		//Set x
	virtual void set_y(int) =0;		//Set y
	virtual void set_w(int) =0;		//Set width
	virtual void set_h(int) =0;		//Set height
	virtual ~Tower(){}
	//TODO: Add Projectiles Vector
	//virtual vector<Projectile> projectiles;
};

class BasicTower: public Tower
{
private:
	//Basic Tower
	int x, y, w, h, speed, level, upgrade_price, sell_price;
	//TODO: Add Projectiles Vector
	//vector<Projectile> projectiles;
public:
	BasicTower();
	~BasicTower();
	void shoot();
	void upgrade();

	//Inline these simple functions
	int get_x(){return x;}
	int get_y(){return y;}
	int get_w(){return w;}
	int get_h(){return h;}
	int get_level(){return level;}
	void set_x(int p){x=p;}
	void set_y(int p){y=p;}
	void set_w(int p){w=p;}
	void set_h(int p){h=p;}
};

#endif /* TOWER_H_ */
